import * as prettier from "prettier";
import parserBabel from 'prettier/parser-babel';
import parserHtml from 'prettier/parser-html';


/**
 * 格式化代码的工具函数。
 *
 * @param {string} code - 要格式化的代码字符串。
 * @param {Object} options - 格式化选项。
 * @returns {Promise<string>} - 返回格式化后的代码字符串。
 */
function formatCode(code: string, options = {}) {
    console.log("formatCode formatCode", code)
    const defaultOptions: any = {
        parser: 'vue', // 默认解析器为vue
        plugins: [parserBabel, parserHtml], // 加载所需的解析器插件
    };


    prettier.format("foo ( );", {
        semi: false, parser: "babel",
        plugins: [parserBabel]
    }).then((value: string) => {
        console.log(value)
    })
    // -> 'foo()\n'

    // try {
    //     const formattedCode = await prettier.format(code, defaultOptions)
    //     console.log(formattedCode)
    //     return formattedCode
    // } catch (error) {
    //     console.error('代码格式化失败:', error.message);
    //     throw error; // 抛出错误，以便调用者处理
    // }
    return code
}

export default formatCode;


// 格式化代码
export async function prettierCode(code: string) {
    try {
        // 参数1：代码字符串，参数2：格式化配置
        return prettier.format(code, {
            // 使用html格式
            parser: "vue",
            // 使用引入的插件parserHtml格式化
            plugins: [parserHtml],
            // 允许vue脚本
            vueIndentScriptAndStyle: true,
        });
    } catch (error) {
        // 如果格式化失败,返回源码
        return code;
    }
}
